package com.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import org.apache.log4j.Logger;

public class PropUtil {

	private static Map<String,String> dbconfigMap = new HashMap<String,String>();
	private static final Logger logger = Logger.getLogger(PropUtil.class);
	private static String properiesName = "dbconfig.properties";

	static{
		dbconfigMap.put("jdbc.driverClassName", "com.mysql.jdbc.Driver");
	}
	public PropUtil() {

	}

	public PropUtil(String fileName) {
		this.properiesName = fileName;
	}

	public static String getProp(String key) {
		return dbconfigMap.get(key);
//		String value = "";
//		InputStream is = null;
//		try {
//			Properties p = new Properties();
//
//			URL url = PropUtil.class.getClassLoader().getResource("/");
//			if (url == null) {
//				url = PropUtil.class.getResource("/");
//			}
//
//			String filePath = url.getPath();
//			boolean isjar = filePath.contains(".jar!");
//			System.out.println(isjar);
//			if (isjar) {
//				String jarPath = PropUtil.class.getProtectionDomain().getCodeSource().getLocation().getFile();
//				System.out.println(jarPath);
//				// 路径拼接
//				URL urljar = new URL("jar:file:" + jarPath + "!" + File.separator + properiesName);
//				System.out.println(urljar.getPath());
//				// 标准输入流
//				InputStream in = urljar.openStream();
//				p.load(in);
//			} else {
//				is = new FileInputStream(new File(url.getPath() + properiesName));
//				p.load(is);
//			}
//
//			// is = PropUtil.class.getClassLoader().getResourceAsStream(
//			// properiesName);
//			// p.load(is);
//			value = p.getProperty(key);
//		} catch (IOException e) {
//			e.printStackTrace();
//		} finally {
//			try {
//				is.close();
//			} catch (IOException e) {
//				e.printStackTrace();
//			}
//		}
//		return value;
	}

	public static Properties getProperties() {
		Properties p = new Properties();
		InputStream is = null;
		try {
			is = PropUtil.class.getClassLoader().getResourceAsStream(properiesName);
			p.load(is);
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				is.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return p;
	}

	public static void writeProperty(String key, String value) {
		dbconfigMap.put(key,value);
//		InputStream is = null;
//		OutputStream os = null;
//		Properties p = new Properties();
//		try {
//
//			String filePath = PropUtil.class.getProtectionDomain().getCodeSource().getLocation().getPath();
//			
//			System.out.println(filePath);
//			boolean isjar = filePath.contains(".jar");
//			System.out.println(isjar);
//			if (isjar) {
//				String jarPath = PropUtil.class.getProtectionDomain().getCodeSource().getLocation().getFile();
//				jarPath = java.net.URLDecoder.decode(jarPath, "UTF-8");
//				System.out.println(jarPath);
//				// 路径拼接
//				URL urljar = new URL("jar:file:/D:/Users/Administrator/Desktop/codeai.jar!/" + properiesName);
//				System.out.println(urljar.getPath());
//				// 标准输入流
//
//				InputStream in = new FileInputStream(urljar.getFile());
//				p.load(in);
//				os = new FileOutputStream(urljar.getFile());
//
//			} else {
//				is = new FileInputStream(PropUtil.class.getClassLoader().getResource(properiesName).getFile());
//				p.load(is);
//				os = new FileOutputStream(PropUtil.class.getClassLoader().getResource(properiesName).getFile());
//
//			}
//
//			p.setProperty(key, value);
//			p.store(os, key);
//			os.flush();
//			os.close();
//		} catch (Exception e) {
//			e.printStackTrace();
//		} finally {
//			try {
//				if (null != is)
//					is.close();
//				if (null != os)
//					os.close();
//			} catch (IOException e) {
//				e.printStackTrace();
//			}
//		}
	}

	public static void writeDriverUrl(String value) {
		writeProperty("jdbc.driverClassName", value);
	}

	public static void writeDbUrl(String value) {
		writeProperty("jdbc.url", value);
	}

	public static void writeUname(String value) {
		writeProperty("jdbc.username", value);
	}

	public static void writeUpwd(String value) {
		writeProperty("jdbc.password", value);
	}

	public static String getDriverUrl() {
		System.out.println(dbconfigMap);
		return getProp("jdbc.driverClassName");
	}

	public static String getDbUrl() {
		return getProp("jdbc.url");
	}

	public static String getUname() {
		return getProp("jdbc.username");
	}

	public static String getUpwd() {
		return getProp("jdbc.password");
	}
	
}